In a virtualization system, the hardware resources of a host computer are abstracted and presented as one or more individual virtual machines. Each virtual machine may host a separate instance of an operating system (“OS”). A virtual machine monitor (“VMM”) executing on the host computer may be responsible for allocating processor time and memory among the virtual machines, and for mediating access to shared resources. The VMM may attempt to fairly allocate limited hardware resources, such as processor time and memory, to each virtual machine to ensure that the OS hosted by each virtual machine performs as desired.
The VMM may predicate allocation of these limited resources upon adherence of the virtual machines to guidelines associated with intended functionality of a particular form of a virtual machine instance type. For example, some virtual machine instance types may include guidelines stipulating that a virtual machine may use “bursts” of resources, if necessary, for a specified window of time. However, program code configured to execute through these virtual machine instance types may violate these guidelines to enable consuming more hardware resources than would otherwise be available and, in effect, saturate resources with requests for consuming compute cycles. This may result in the OS and programs executing in one virtual machine causing a “noisy neighbor” effect and adversely impacting the performance of the programs executing in the other virtual machines. Furthermore, should a particular VMM for a host system determine that these violations are occurring and terminate the virtual machine instance, conventional systems would allow a similar virtual machine instance to be instantiated on another host system and, therefore, to continue the detrimental behavior.
The disclosure made herein is presented with respect to these and other considerations.